home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #054 (1990)(Amiga User Group Deutschland e.V.).zip / Franz PD Disk #054 (1990)(Amiga User Group Deutschland e.V.).adf / FastDiskII / Source / fds.c < prev    next >
C/C++ Source or Header  |  1989-07-02  |  5KB  |  343 lines

  1. #include <proto/intuition.h>
  2. #include <proto/exec.h>
  3. #include <proto/graphics.h>
  4. #include <proto/arp.h>
  5. #include <libraries/arpbase.h>
  6. #include <string.h>
  7.  
  8. static SHORT BorderVectors1[] = {
  9.     0,0,
  10.     59,0,
  11.     59,21,
  12.     0,21,
  13.     0,0
  14. };
  15. static struct Border Border1 = {
  16.     -1,-1,
  17.     3,0,JAM1,
  18.     5,
  19.     BorderVectors1,
  20.     NULL
  21. };
  22.  
  23. static struct TextAttr TOPAZ80 = {
  24.     (STRPTR)"topaz.font",
  25.     TOPAZ_EIGHTY,0,0
  26. };
  27. static struct IntuiText IText1 = {
  28.     1,0,JAM1,
  29.     18,6,
  30.     &TOPAZ80,
  31.     "GO!",
  32.     NULL
  33. };
  34.  
  35. static struct Gadget gogad = {
  36.     NULL,
  37.     200,16,
  38.     58,20,
  39.     NULL,
  40.     RELVERIFY,
  41.     BOOLGADGET,
  42.     (APTR)&Border1,
  43.     NULL,
  44.     &IText1,
  45.     NULL,
  46.     NULL,
  47.     3,
  48.     NULL
  49. };
  50.  
  51. static SHORT BorderVectors2[] = {
  52.     0,0,
  53.     72,0,
  54.     72,10,
  55.     0,10,
  56.     0,0
  57. };
  58. static struct Border Border2 = {
  59.     -1,-1,
  60.     3,0,JAM1,
  61.     5,
  62.     BorderVectors2,
  63.     NULL
  64. };
  65.  
  66. static struct IntuiText IText2 = {
  67.     1,0,JAM1,
  68.     3,1,
  69.     &TOPAZ80,
  70.     "NOFORMAT",
  71.     NULL
  72. };
  73.  
  74. static struct Gadget nfgad = {
  75.     &gogad,
  76.     115,28,
  77.     71,9,
  78.     NULL,
  79.     RELVERIFY+TOGGLESELECT,
  80.     BOOLGADGET,
  81.     (APTR)&Border2,
  82.     NULL,
  83.     &IText2,
  84.     NULL,
  85.     NULL,
  86.     NULL,
  87.     NULL
  88. };
  89.  
  90.  
  91. static struct IntuiText IText3 = {
  92.     1,0,JAM1,
  93.     7,1,
  94.     &TOPAZ80,
  95.     "FASTDIR",
  96.     NULL
  97. };
  98.  
  99. static struct Gadget fdgad = {
  100.     &nfgad,
  101.     115,15,
  102.     71,9,
  103.     NULL,
  104.     RELVERIFY+TOGGLESELECT,
  105.     BOOLGADGET,
  106.     (APTR)&Border2,
  107.     NULL,
  108.     &IText3,
  109.     NULL,
  110.     NULL,
  111.     NULL,
  112.     NULL
  113. };
  114.  
  115.  
  116. static struct IntuiText IText5 = {
  117.     2,0,JAM1,
  118.     -39,1,
  119.     &TOPAZ80,
  120.     "Dest",
  121.     NULL
  122. };
  123.  
  124. static struct IntuiText IText4 = {
  125.     1,0,JAM2,
  126.     2,1,
  127.     &TOPAZ80,
  128.     "DF1:",
  129.     &IText5
  130. };
  131.  
  132. static SHORT BorderVectors5[] = {
  133.     0,0,
  134.     36,0,
  135.     36,10,
  136.     0,10,
  137.     0,0
  138. };
  139. static struct Border Border5 = {
  140.     -1,-1,
  141.     3,0,JAM1,
  142.     5,
  143.     BorderVectors5,
  144.     NULL
  145. };
  146.  
  147. static struct Gadget dgad = {
  148.     &fdgad,
  149.     68,28,
  150.     35,9,
  151.     NULL,
  152.     RELVERIFY,
  153.     BOOLGADGET,
  154.     (APTR)&Border5,
  155.     NULL,
  156.     &IText4,
  157.     NULL,
  158.     NULL,
  159.     2,
  160.     NULL
  161. };
  162.  
  163.  
  164. static struct IntuiText IText7 = {
  165.     2,0,JAM1,
  166.     -55,1,
  167.     &TOPAZ80,
  168.     "Source",
  169.     NULL
  170. };
  171.  
  172. static struct IntuiText IText6 = {
  173.     1,0,JAM2,
  174.     2,1,
  175.     &TOPAZ80,
  176.     "DF0:",
  177.     &IText7
  178. };
  179.  
  180. static struct Gadget sgad = {
  181.     &dgad,
  182.     68,15,
  183.     35,9,
  184.     NULL,
  185.     RELVERIFY,
  186.     BOOLGADGET,
  187.     (APTR)&Border5,
  188.     NULL,
  189.     &IText6,
  190.     NULL,
  191.     NULL,
  192.     1,
  193.     NULL
  194. };
  195.  
  196. #define GadgetList1 sgad
  197.  
  198. static SHORT BorderVectors6[] = {
  199.     0,0,
  200.     270,0,
  201.     270,12,
  202.     0,12,
  203.     0,0
  204. };
  205. static struct Border Border6 = {
  206.     5,46,
  207.     3,0,JAM1,
  208.     5,
  209.     BorderVectors6,
  210.     NULL
  211. };
  212.  
  213. #define BorderList1 Border6
  214.  
  215. static struct NewWindow nw = {
  216.     189,67,
  217.     282,62,
  218.     1,2,
  219.     GADGETUP+CLOSEWINDOW,
  220.     WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+RMBTRAP+NOCAREREFRESH,
  221.     &sgad,
  222.     NULL,
  223.     0,
  224.     NULL,
  225.     NULL,
  226.     0,0,
  227.     0,0,
  228.     WBENCHSCREEN
  229. };
  230.  
  231.  
  232. /* end of PowerWindows source generation */
  233.  
  234. static short dr1=0,dr2=1;
  235.     
  236. static struct RastPort *rp;
  237. struct Library *IntuitionBase,*GfxBase;
  238. struct ArpBase *ArpBase;
  239.  
  240. static struct Window *w;
  241.  
  242. void _main(void);
  243. void _exit(int);
  244. void goodbye(int);
  245. void pmsg(char*,int);
  246. void loop(void);
  247. void ongad(void);
  248.  
  249. void do_fast(int,int,int,int);
  250.  
  251. void goodbye(x)
  252. int x;
  253. {
  254.     if(w) CloseWindowSafely(w,0);
  255.     if(ArpBase) CloseLibrary(ArpBase);
  256.     _exit(x);
  257. }
  258.  
  259. static char pb[34];
  260. void pmsg(s,m)
  261. char *s;
  262. int m;
  263. {
  264.     int c;
  265.     for(c=0; c<33; pb[c++]=0);
  266.     strcpy(pb+16-(strlen(s)/2),s);
  267.     for(c=0; c<33; c++) if(!pb[c]) pb[c]=32;
  268.     SetDrMd(rp,JAM2);
  269.     SetAPen(rp,(m)?3:1);
  270.     Move(rp,8,55);
  271.     Text(rp,pb,33);
  272.     if(m) DisplayBeep(0L);
  273. }
  274.  
  275.  
  276. void _main()
  277. {
  278.     if(!(ArpBase=OpenLibrary("arp.library",34))) goodbye(30);
  279.     GfxBase=ArpBase->GfxBase;
  280.     IntuitionBase=ArpBase->IntuiBase;
  281.     if(!(w=OpenWindow(&nw))) goodbye(20);
  282.     SetWindowTitles(w,"Fastdisk II","Fastdisk II by Thorsten Stolpmann - Improved, Intuized & Arped by Ølli");
  283.     rp=w->RPort;
  284.     DrawBorder(rp,&BorderList1,0,0);
  285.     pmsg("awaiting your orders!",0);
  286.     loop();
  287. }
  288.  
  289. void loop()
  290. {
  291.     struct IntuiMessage *msg;
  292.  
  293.     ongad();
  294.     for(;;) {
  295.         while(!(msg=GetMsg(w->UserPort))) WaitPort(w->UserPort);
  296.         if(msg->Class==CLOSEWINDOW) goodbye(0);
  297.         switch(((struct Gadget*)(msg->IAddress))->GadgetID) {
  298.             case 1:
  299.                 dr1++;
  300.                 dr1&=3;
  301.                 (IText6.IText)[2]='0'+dr1;
  302.                 RefreshGList(&sgad,w,0,1);
  303.                 break;
  304.             case 2:
  305.                 dr2++;
  306.                 dr2&=3;
  307.                 (IText4.IText)[2]='0'+dr2;
  308.                 RefreshGList(&dgad,w,0,1);
  309.                 break;
  310.             case 3:
  311.                 if(dr1==dr2) {
  312.                     DisplayBeep(0);
  313.                     pmsg("source == dest !!!",1);
  314.                     break;
  315.                 }
  316.                 sgad.Flags|=GADGDISABLED;
  317.                 dgad.Flags|=GADGDISABLED;
  318.                 nfgad.Flags|=GADGDISABLED;
  319.                 fdgad.Flags|=GADGDISABLED;
  320.                 gogad.Flags|=GADGDISABLED;
  321.                 RefreshGadgets(&sgad,w,0);
  322.                 do_fast(dr1,dr2,fdgad.Flags&SELECTED,nfgad.Flags&SELECTED);
  323.                 ongad();
  324.                 break;            
  325.                 
  326.         }
  327.         ReplyMsg(msg);
  328.     }
  329. }
  330.  
  331. void ongad()
  332. {
  333.     if(!(sgad.Flags&GADGDISABLED)) return;
  334.     SetAPen(rp,0);
  335.     RectFill(rp,66,13,259,38);
  336.     sgad.Flags&=~GADGDISABLED;
  337.     dgad.Flags&=~GADGDISABLED;
  338.     nfgad.Flags&=~GADGDISABLED;
  339.     fdgad.Flags&=~GADGDISABLED;
  340.     gogad.Flags&=~GADGDISABLED;
  341.     RefreshGadgets(&sgad,w,0);
  342. }
  343.